package br.com.fatecmc.logistica.core.dao.impl;
/**
 * @Autor Erico Veriscimo
 */
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;

import br.com.fatecmc.core.dao.AbstractDAO;
import br.com.fatecmc.fatec.domain.Entidade;
import br.com.fatecmc.persephone.logistica.domain.Logistica;

public class DAOLogistica extends AbstractDAO{

	@Override
	public void salvar(Entidade obj) throws IllegalArgumentException {
		try {
			Logistica log = (Logistica) obj;
			conexao.getConexao().createStatement(); 
	        String sql =  "INSERT INTO tb_logistica ( id_propriedade, faz_distribuicao_flg, distancia_asfalto_km, qualidade_estradas )" +
	        			   "VALUES(?,?,?,?)";
	        PreparedStatement pstm = conexao.getConexao().prepareStatement(sql);
	        pstm.setInt(1, log.getId());
	        pstm.setBoolean(2, log.getFazDistribuicao());
	        pstm.setDouble(3, log.getDistanciaAsfalto());
	        pstm.setString(4, log.getQualidadeEstradas());
	       
	        pstm.executeUpdate();
	        pstm.close();
	        conexao.getConexao().close();
		} catch (Exception e) {
			Logger.getLogger(DAOLogistica.class.getName()).log(Level.SEVERE, null, e);
		}
	}

	@Override
	public Entidade alterar(Entidade obj) {
		try {
            Logistica log = (Logistica) obj;
            conexao.getConexao().createStatement(); 
            String sql =  "update tb_logistica set faz_distribuicao_flg = ?, distancia_asfalto_km = ?, qualidade_estradas = ? " +
            			" where id_propriedade = ? ";
            PreparedStatement pstm = conexao.getConexao().prepareStatement(sql);
            pstm.setBoolean(1, log.getFazDistribuicao());
            pstm.setDouble(2, log.getDistanciaAsfalto());
            pstm.setString(3, log.getQualidadeEstradas());
            pstm.setInt(4, log.getId());
           
            pstm.executeUpdate();
            conexao.getConexao().close();
            pstm.close();
            return log;
        } catch (SQLException ex) {
            Logger.getLogger(DAOLogistica.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
	}

	@Override
	public boolean excluir(Entidade obj) {
		 try {
			 	Logistica log = (Logistica) obj;
	            conexao.getConexao().createStatement(); 
	            String sql =  "delete from tb_logistica where id_propriedade = ? ";
	            PreparedStatement pstm = conexao.getConexao().prepareStatement(sql);
	            pstm.setInt(1 , log.getId());
	            pstm.executeUpdate();
	            conexao.getConexao().close();
	            pstm.close();
	            return true;
	        } catch (SQLException ex) {
	            Logger.getLogger(DAOLogistica.class.getName()).log(Level.SEVERE, null, ex);
	            return false;
	        }
	}

	@Override
	public Collection consultar(Entidade obj) {
		  try {
	            Logistica log = (Logistica) obj;
	            String sql ="";
	            PreparedStatement pstm;
	            conexao.getConexao().createStatement();
	           
	            sql = "SELECT * from tb_logistica where id_propriedade = ?";
	            pstm = conexao.getConexao().prepareStatement(sql);
	            pstm.setInt(1 , log.getId());
	            
	            
	            
	            ResultSet rs = pstm.executeQuery();
	            ArrayList<Entidade> lista = new ArrayList<Entidade>();
	            while (rs.next()) {     
	            	Logistica logis = new Logistica();
	            	logis.setId(rs.getInt("id_propriedade"));  
	            	logis.setDistanciaAsfalto(rs.getFloat("distancia_asfalto_km"));
	            	logis.setFazDistribuicao(rs.getBoolean("faz_distribuicao_flg"));
	            	logis.setQualidadeEstradas(rs.getString("qualidade_estradas"));
	               
	                lista.add(logis);
	                
	                
	            }  
	            conexao.getConexao().close();
	            pstm.close();
	            return lista;
	        } catch (SQLException ex) {
	            Logger.getLogger(DAOLogistica.class.getName()).log(Level.SEVERE, null, ex);
	            return null;
	        }
	}

}
